package com.zmn.plat.services.interfaces.product.tariff.item;

import java.util.List;

import com.zmn.plat.model.dto.product.ProductTariffRelationDTO;
import com.zmn.plat.model.entity.product.ServProductQuery;
import com.zmn.plat.model.vo.product.ServProductVO;
import com.zmn.plat.model.vo.product.tariff.TariffProductItemPriceTariffQueryVO;
import com.zmn.plat.model.vo.product.tariff.TariffProductItemPriceTariffVO;
import com.zmn.plat.model.vo.product.tariff.TariffProductRelationVO;
import com.zmn.plat.model.vo.product.tariff.item.price.ProductServiceItemExcutePriceQueryVo;
import com.zmn.plat.model.vo.product.tariff.item.price.ProductServiceItemExcutePriceResultVo;

/**
 * 计价器专用的service，
 * <p>
 * 一方面是为了兼容老版本的计价器而做的冗余service，另一方面是考虑mapper文件太大了，给它瘦身
 *
 * @author tanbiao
 * @since 2019-11-21 18:57:24
 */
public interface TariffProductServiceItemService {

    /**
     * 根据后台产品id查询对应的计价器产品
     *
     * @param query
     * @return
     */
    List<ServProductVO> listPageByTariffProductIds(ServProductQuery query);

    /**
     * 描述: 查询指定渠道城市保内保外，后台产品服务分类一二级分类的配置了价格表的数据
     *
     * @param query
     * @return List<ProductTariffGroupItemVo>
     * @auther tanbiao
     * @since 2019/12/10 11:39
     */
    List<TariffProductItemPriceTariffVO> listTariffProductItemPriceTariffByQuery(TariffProductItemPriceTariffQueryVO query);

    /**
     * 功能描述 ：查询执行价
     * 
     * @author tanbiao
     * @since 2020/3/10
     * @param query
     * @return java.util.List<com.zmn.plat.model.vo.product.service.item.price.ProductServiceItemExcutePriceResultVo>
     * @modifier
     */
    List<ProductServiceItemExcutePriceResultVo> listByExcuteQuery(ProductServiceItemExcutePriceQueryVo query);

    /**
     * 功能描述 ：后台二级分类过滤可用的后台产品并确定价格表和产品的对应关系
     * 
     * @author tanbiao
     * @since 2020/3/10
     * @param query
     * @modifier
     */
    List<TariffProductRelationVO> listTariffProductRelationByQuery(TariffProductItemPriceTariffQueryVO query);

    /**
     * 功能描述 ：根据产品id和价格表id，城市id，查询默认一口价服务项项目（只考虑城市维度城市定价方式）
     *
     * @author tanbiao
     * @since 2020/3/10
     * @param ratioPriceProductList
     * @param cityId
     * @modifier
     */
    List<ProductServiceItemExcutePriceResultVo> listDefaultItemByRelationAndCityId(List<ProductTariffRelationDTO> ratioPriceProductList, Integer cityId);

    /**
     * 功能描述 ：根据产品id和价格表id，查询默认一口价服务项项目
     *
     * @author tanbiao
     * @since 2020/3/10
     * @param list
     * @modifier
     */
    List<ProductServiceItemExcutePriceResultVo> listDefaultItemByRelation(List<ProductTariffRelationDTO> list);
    /**
     * 功能描述 ：查询执行价统计
     * 
     * @author tanbiao
     * @since 2020/3/10
     * @param query
     * @modifier
     */
    Integer countByExcuteQuery(ProductServiceItemExcutePriceQueryVo query);

    /**
     * 根据后台产品id统计对应的计价器产品
     *
     * @param query
     * @return
     */
    Integer countByTariffProductIds(ServProductQuery query);

}
